#!/bin/bash
# 功能：仅移除Debian桌面环境组件，不影响系统核心功能，减少内存占用
# 适用：Debian 10+ 带桌面环境的系统
# 注意：保留网络、命令行工具及系统服务，运行前请备份数据

set -e  # 错误时退出，避免误操作

# 检查root权限
if [ "$(id -u)" -ne 0 ]; then
    echo "错误：请用root权限运行（sudo ./debian_remove_desktop.sh）"
    exit 1
fi

# 仅移除桌面环境相关包（不涉及核心系统组件）
DESKTOP_COMPONENTS=(
    # 桌面环境主包组
    "task-gnome-desktop" "task-kde-desktop" "task-xfce-desktop" 
    "task-lxde-desktop" "task-mate-desktop" "task-cinnamon-desktop"
    
    # 显示服务器和管理器
    "xserver-xorg" "xserver-xorg-core" "lightdm" "gdm3" "sddm" "lxdm"
    
    # 桌面核心组件
    "gnome-shell" "plasma-desktop" "xfce4" "lxde" "mate-desktop" "cinnamon"
    
    # 桌面附属工具
    "nautilus" "dolphin" "thunar" "pcmanfm"  # 文件管理器
    "gnome-terminal" "konsole" "xfce4-terminal"  # 终端模拟器
    "gnome-control-center" "systemsettings"  # 控制中心
    "gnome-session" "plasma-workspace" "xfce4-session"  # 会话管理
    
    # X11相关（桌面依赖的图形协议）
    "x11-apps" "x11-utils" "x11-xserver-utils" "libx11-6" "libxcb1"
)

echo "=== 开始移除桌面环境 ==="

# 1. 先更新包列表（确保识别最新状态）
echo "Step 1/3：更新包列表..."
apt update -qq

# 2. 移除桌面组件（使用purge彻底删除配置文件）
echo "Step 2/3：移除桌面环境组件..."
# 忽略不存在的包（避免个别桌面未安装导致脚本中断）
apt purge -y --allow-remove-essential "${DESKTOP_COMPONENTS[@]}" || true

# 3. 清理仅桌面依赖的冗余包（不影响系统核心）
echo "Step 3/3：清理残留依赖..."
# 仅自动移除不再需要的包，不删除重要系统组件
apt autoremove -y --purge
apt autoclean

# 验证核心服务状态（确保系统基础功能正常）
echo "=== 核心服务状态检查 ==="
ESSENTIAL_SERVICES=("ssh" "networking" "systemd-journald" "cron")
for service in "${ESSENTIAL_SERVICES[@]}"; do
    if systemctl is-active --quiet "$service"; then
        echo "✅ $service 运行正常"
    else
        echo "⚠️ $service 未运行，建议检查：sudo systemctl start $service"
    fi
done

echo "=== 操作完成 ==="
echo "桌面环境已移除，系统将以命令行模式启动"
echo "内存占用已优化，核心功能不受影响"
echo "建议重启系统：sudo reboot"